package com.hssy.wululuaplan;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class CodeGenerator {
    public static void main(String[] args) {
        List<String> tables = new ArrayList<>();
//        tables.add("p_user");
//        tables.add("p_question");
//        tables.add("game_category");
//        tables.add("game_game_category");  //  TODO
//         tables.add("keep_account");        //  TODO
//         tables.add("sys_user");        //  TODO
//         tables.add("sys_user_token");        //  TODO
        tables.add("invite_code_record");        //  TODO

        // FastAutoGenerator.create("jdbc:mysql://122.51.68.25:3306/wululu_aplan?serverTimezone=UTC","root","qwe!2345")
        FastAutoGenerator.create("jdbc:mysql://106.75.224.22:3306/wululu_aplan?serverTimezone=UTC","root","qwe!2345")
                .globalConfig(builder -> {
                    builder.author("Mr.Hongtao")               //作者
                            .outputDir(System.getProperty("user.dir")+"\\src\\main\\java")    //输出路径(写到java目录)
                            .enableSwagger()           //开启swagger
                            .commentDate("yyyy-MM-dd");
                            // .fileOverride();            //开启覆盖之前生成的文件

                })
                .packageConfig(builder -> {
                    builder.parent("com.hssy")
                            .moduleName("wululuaplan") //模块名称                  TODO
                            .entity("entity")   //实体类名称            TODO
                            .service("service")  //service名称         TODO
                            .serviceImpl("service.impl")            //  TODO
                            .controller("controller")              //  TODO
                            .mapper("mapper")                  //  TODO
                            .xml("mapper")                       //  TODO
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"\\src\\main\\resources\\mapper"));//  TODO
                })
                .strategyConfig(builder -> {
                    builder.addInclude(tables)
                            .addTablePrefix("test_") //过滤表名前缀，比如p_test,我们生成的实体类名就是test      //  TODO

                            .serviceBuilder()   //sevice策略配置
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImpl")

                            .entityBuilder()    //实体类策略配置
                            .enableLombok()     //开启lombok
                            .logicDeleteColumnName("delete_flag") //说明逻辑删除的是哪个字段
                            .enableTableFieldAnnotation()   //属性加上说明注解

                            .controllerBuilder()    //controller配置策略
                            // 映射路径使用连字符格式，而不是驼峰
                            .enableHyphenStyle()
                            .formatFileName("%sController")
                            .enableRestStyle()   //开启RestController

                            .mapperBuilder()    //mapper配置策略
                            //生成通用的resultMap
                            .enableBaseResultMap()
                            .superClass(BaseMapper.class)   //继承哪个父类
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()     //开启@Mapper注解
                            .formatXmlFileName("%sMapper");
                })
//                .templateConfig(new Consumer<TemplateConfig.Builder>() {
//                    @Override
//                    public void accept(TemplateConfig.Builder builder) {
//                        // 实体类使用我们自定义模板
//                        builder.entity("templates/myentity.java");
//                    }
//                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }



}